Skip to main content

DopplerController

The DopplerController handles retrieval of radar images for weather data visualization.

Overview​

This controller provides access to radar images stored in Azure Blob Storage. It processes time-based requests and returns radar imagery for specific geographic areas (quad keys) and time periods.

Data Sources​

  • Azure Blob Storage: radar-images container
  • Configuration: appsettings.json for connection string
  • Error Storage: Azure Table Storage for error logging

Endpoints​

GET /api/doppler/images​

Retrieves radar images based on simulation time, duration, and geographic location.

Query Parameters:

  • simulationStartDateTime (string): Start time of simulation
  • minutes (string): Duration in minutes from start time
  • quadKey (string): Geographic quad key for tile location

Response:

  • 200 OK: Returns image stream (PNG format)
  • 404 Not Found: Image not available
  • 500 Internal Server Error: Storage or processing error

Data Flow:

Blob Storage Structure:

radar-images/
├── {YYYY-MM-ddTHH:mm:sszzz}/
│ ├── {quadKey1}.png
│ ├── {quadKey2}.png
│ └── ...

Time Processing:

  • Input time is rounded to nearest 15-minute interval
  • Format: yyyy-MM-ddTHH:mm:sszzz
  • UTC timezone handling

Azure Storage Details​

Blob Container​

  • Container Name: radar-images
  • Access Level: Read-only
  • Content Type: image/png

Error Handling​

  • Errors are logged to Azure Table Storage
  • Application name: SWMM5WEB
  • Includes error message and stack trace

Configuration​

Required Settings:

{
"Values": {
"CloudStorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net"
}
}

Dependencies​

  • Azure.Storage.Blobs
  • Azure.Data.Tables
  • GqcStorage1 (Storage utilities)
  • ConstantsSwmm (Constants)

Error Scenarios​

  1. Missing Image: Returns null when blob doesn't exist
  2. Storage Connection: Handles Azure storage exceptions
  3. Invalid Parameters: Validates time and quad key parameters
  4. Network Issues: Graceful handling of download failures

Performance Considerations​

  • Uses memory streams for efficient image transfer
  • Direct blob download without intermediate processing
  • Minimal memory footprint for large image files